use std::collections::HashMap;

use command::win_config::*;
use tauri::{
    http::header::{HeaderValue}, utils::config::{Csp, CspDirectiveSources}, webview::WebviewWindowBuilder
  };
pub mod command;

#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub async fn run() {
    tauri::Builder::default()
        .plugin(tauri_plugin_opener::init())
        .invoke_handler(tauri::generate_handler![greet,close_window,maximize_window,minimize_window,toggle_minimize])
        .setup(|app| {
            WebviewWindowBuilder::new(app,
              "tikio",
              tauri::WebviewUrl::External("https://www.tiktok.com/explore".parse().unwrap()))
                .title("tikio")
                // .on_web_resource_request(|request, response| {
                //     println!("Intercepted Request URI: {:?}", request.uri());
                //     println!("Response Status: {:?}", response.status());
                //     println!("Response Headers: {:?}", response.headers());
                //     if request.uri().scheme_str() == Some("tauri") {
                //       if let Some(csp) = response.headers_mut().get_mut("Content-Security-Policy") {
                //         let mut csp_map: HashMap<String, CspDirectiveSources> = Csp::Policy(csp.to_str().unwrap().to_string()).into();
                //         csp_map.entry("script-src".to_string()).or_insert_with(Default::default).push("'unsafe-inline'");
                //         let csp_string = Csp::from(csp_map).to_string();
                //         *csp = HeaderValue::from_str(&csp_string).unwrap();
                //       }
                //     }
                //   })
                .build()?;
            // 注册 HTTP 插件
            // let http_plugin = HttpPlugin::new();
            // app.plugin(http_plugin);

            // // 监听请求
            // app.listen_global("http:request", |event| {
            //     if let Some(payload) = event.payload() {
            //         if let Ok(request) = serde_json::from_str::<Request>(payload) {
            //             println!("Request: {:?}", request);
            //         }
            //     }
            // });

            // // 监听响应
            // app.listen_global("http:response", |event| {
            //     if let Some(payload) = event.payload() {
            //         if let Ok(response) = serde_json::from_str::<Response>(payload) {
            //             println!("Response: {:?}", response);
            //         }
            //     }
            // });
            Ok(())
        })
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
